###############################################
# GRAPHS FOR GROUND PROFILES WITH FIXED VALUES:
###############################################
stap=0.01;seq=seq(.005,.995,.01)
D1=dnorm(seq,0.40,0.04);D1=D1/(sum(D1)*stap)
D2=dnorm(seq,0.70,0.10);D2=D2/(sum(D2)*stap)
G1=(D1+D2)/2
G2=dnorm(seq,0.45,0.15);G2=G2/(sum(G2)*stap)
plot(seq,G1,col='blue',type='l',lwd=2,ylim=c(0,8),axes=FALSE,
main=c(paste('Respondent Profiles for'),
paste('Group 1 (mean=.55) and Group 2 (mean=.45)')),
xlab='Probability of Behaviour',ylab='Likelihood of Probability')
axis(side=1,at=seq(0,1,0.10));axis(side=2,at=seq(0,8,2),las=1)
lines(seq,G2,col='red',lwd=2)
legend('topleft',bty='n',
c('Profile Group 1','Profile Group 2'),
fill=c('blue','red'))


#############################################################################
# SAMPLE RESPONDENT DATA OBSERVATIONS FROM GROUND PROFILES WITH FIXED VALUES:
#############################################################################
S1=sample(seq,500,replace=TRUE,prob=G1)
S2=sample(seq,500,replace=TRUE,prob=G2)


# READ IN S1 AND S2

S1=read.table('S1.txt')
S2=read.table('S2.txt')
S1=as.vector(unlist(S1))
S2=as.vector(unlist(S2))


SIMU=0
avesamp1=matrix(,100,10000)
avesamp2=matrix(,100,10000)
while(SIMU<10000)
{

###################################################################
# SAMPLE SPECIFIED NUMBER OF ITEMS PER RESPONDENT DATA OBSERVATION:
###################################################################
items=10
SAMP1=matrix(0,500,items)
for(x in 1:500)
{
s=sample(c(0,1),items,replace=TRUE,prob=c(1-S1[x],S1[x]))
SAMP1[x,]=s
}

items=10
SAMP2=matrix(0,500,items)
for(x in 1:500)
{
s=sample(c(0,1),items,replace=TRUE,prob=c(1-S2[x],S2[x]))
SAMP2[x,]=s
}


######################################################
# CONSTRUCT ESTIMATED PROFILES BASED ON ITEM SAMPLING:
######################################################
stap=0.01;ncel=100;uit_samp1=matrix(0,ncel,1);n_samp1=0
for (i in 1:500)
{
  db=dbinom(sum(SAMP1[i,]),sum(table(SAMP1[i,])),seq)
  uiti=matrix(db,ncel,1)/(sum(db)*stap)
  uit_samp1=uit_samp1+uiti
  n_samp1=n_samp1+1
}
uit_samp1=uit_samp1/n_samp1

stap=0.01;ncel=100;uit_samp2=matrix(0,ncel,1);n_samp2=0
for (i in 1:500)
{
  db=dbinom(sum(SAMP2[i,]),sum(table(SAMP2[i,])),seq)
  uiti=matrix(db,ncel,1)/(sum(db)*stap)
  uit_samp2=uit_samp2+uiti
  n_samp2=n_samp2+1
}
uit_samp2=uit_samp2/n_samp2


avesamp1[,SIMU+1]=uit_samp1
avesamp2[,SIMU+1]=uit_samp2


SIMU=SIMU+1;if(SIMU%%500==0)print(SIMU)
}

PROFILES_G1_10=avesamp1
PROFILES_G2_10=avesamp2

write.table(PROFILES_G1_10,'PROFILES_G1_10.txt',row.names=FALSE,col.names=FALSE)
write.table(PROFILES_G2_10,'PROFILES_G2_10.txt',row.names=FALSE,col.names=FALSE)


